﻿// Example header text. Can be configured in the options.
using System;
using System.Data;
using System.Data.SqlClient;
using vtech_frameWorks.Library;

namespace vtech_frameWorks.Object
{
    public class ClsObjectBS
    {
        protected static DataTable dtObject = ClsObject.DataTable;
        protected static SqlConnection conn = null;
        protected static SqlTransaction tran = null;

        #region GetData
        /****** 
        * =============================================
        * Author:		<Chaunn>
        * Create date: <06.01.2012>
        * Good
        * Description:	Lấy tất cả dữ liệu
        * =============================================
        * ******/
        /// <summary>
        /// Lấy tất cả dữ liệu
        /// </summary>
        /// <returns>Kiểu dữ liệu trả về là một datatable</returns>
        public virtual DataTable GetAll()
        {
            return null;
        }

        #endregion

        #region Insert
        /****** 
        * =============================================
        * Author:		<Chaunn>
        * Create date: <06.01.2012>
        * Good
        * Description:	Chèn một đối tượng vào CSDL
        * =============================================
        * ******/
        /// <summary>
        /// Chèn một đối tượng vào CSDL
        /// </summary>
        /// <param name="dt"></param>
        public virtual void DoInsert(DataTable dt)
        {
        }

        #endregion

        #region Edit
        /****** 
        * =============================================
        * Author:		<Chaunn>
        * Create date: <06.01.2012>
        * Good
        * Description:	Sửa Một đối tượng
        * =============================================
        * ******/
        /// <summary>
        /// Sửa Một đối tượng
        /// </summary>
        public virtual void DoEdit(DataTable dt)
        {
        }

        #endregion

        #region Delete
        /****** 
        * =============================================
        * Author:		<Chaunn>
        * Create date: <06.01.2012>
        * Good
        * Description:	Xóa
        * =============================================
        * ******/
        /// <summary>
        /// Xóa
        /// </summary>
        /// <param name="drow"></param>
        public virtual void DoDelete(DataRow drow)
        {
        }

        #endregion
        
        #region Search
        /// <summary>
        /// Tìm kiếm theo một biểu thức điều kiện
        /// </summary>
        /// <param name="strExpression"></param>
        /// <returns></returns>
        public static DataRow[] SearchByExpression(string strExpression)
        {
            return dtObject.Select(strExpression);
        }

        /// <summary>
        /// Tìm kiếm theo thuộc tính nào đó trong csdl
        /// VD: ID,Ma.....
        /// </summary>
        /// <param name="strProperty"></param>
        /// <param name="oValue"></param>
        /// <returns></returns>
        public static DataRow[] SearchByExpression(string strProperty, object oValue)
        {
            string filterExpression = "";
            if (oValue is string)
            {
                filterExpression = string.Format("{0} = '{1}'", strProperty, oValue);
            }
            else if (oValue is Guid)
            {
                filterExpression = string.Format("{0} = '{1}'", strProperty, oValue);
            }
            else
            {
                filterExpression = string.Format("{0} = {1}", strProperty, oValue);
            }
            return dtObject.Select(filterExpression);
        }

        #endregion

        #region GetByID
        /****** 
        * =============================================
        * Author:		<Chaunn>
        * Create date: <06.01.2012>
        * Good
        * Description:	Lấy dữ liệu theo ID
        * =============================================
        * ******/
        /// <summary>
        /// Lấy dữ liệu theo ID
        /// </summary>
        /// <param name="ID">ID của đối tượng</param>
        /// <returns>Datarow</returns>
        public static DataRow GetByID(Guid ID)
        {
            return SearchByExpression("ID", ID)[0];
        }

        #endregion

        #region GetByCode
        /****** 
        * =============================================
        * Author:		<Chaunn>
        * Create date: <06.01.2012>
        * Good
        * Description:	Lấy dữ liệu theo Ma
        * =============================================
        * ******/
        /// <summary>
        /// Lấy dữ liệu theo Ma
        /// </summary>
        /// <param name="ID">Ma của đối tượng</param>
        /// <returns>Datarow</returns>
        public virtual DataRow GetByCode(string strCode)
        {
            return SearchByExpression("Code", strCode)[0];
        }
        #endregion
    }
}